home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / TeXsource / web2ctex / ctex / c / tex7 < prev    next >
Encoding:
Text File  |  1988-05-19  |  48.3 KB  |  2,154 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. insertdollarsign () {
  5.     insertdollarsign_regmem 
  6.   backinput () ; 
  7.   curtok = 804 ; 
  8.   {
  9.     if ( interaction == 3 ) 
  10.     wakeupterminal () ; 
  11.     printnl ( 133 ) ; 
  12.     print ( 865 ) ; 
  13.   } 
  14.   {
  15.     helpptr = 2 ; 
  16.     helpline [ 1 ] = 866 ; 
  17.     helpline [ 0 ] = 867 ; 
  18.   } 
  19.   inserror () ; 
  20. youcant () {
  21.     youcant_regmem 
  22.   {
  23.     if ( interaction == 3 ) 
  24.     wakeupterminal () ; 
  25.     printnl ( 133 ) ; 
  26.     print ( 541 ) ; 
  27.   } 
  28.   printcmdchr ( curcmd , curchr ) ; 
  29.   print ( 868 ) ; 
  30.   printmode ( curlist .modefield ) ; 
  31. reportillegalcase () {
  32.     reportillegalcase_regmem 
  33.   youcant () ; 
  34.   {
  35.     helpptr = 4 ; 
  36.     helpline [ 3 ] = 869 ; 
  37.     helpline [ 2 ] = 870 ; 
  38.     helpline [ 1 ] = 871 ; 
  39.     helpline [ 0 ] = 872 ; 
  40.   } 
  41.   error () ; 
  42. boolean privileged () {
  43.     register boolean Result; privileged_regmem 
  44.   if ( curlist .modefield > 0 ) 
  45.   Result = true ; 
  46.   else {
  47.       
  48.     reportillegalcase () ; 
  49.     Result = false ; 
  50.   } 
  51.   return(Result) ; 
  52. boolean itsallover () {
  53.     /* 10 */ register boolean Result; itsallover_regmem 
  54.   if ( privileged () ) 
  55.   {
  56.     if ( ( memtop - 2 == pagetail ) && ( curlist .headfield == curlist 
  57.     .tailfield ) && ( deadcycles == 0 ) ) 
  58.     {
  59.       Result = true ; 
  60.       return(Result) ; 
  61.     } 
  62.     backinput () ; 
  63.     {
  64.       mem [ curlist .tailfield ] .hh .v.RH = newnullbox () ; 
  65.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  66.     } 
  67.     mem [ curlist .tailfield + 1 ] .cint = eqtb [ 5704 ] .cint ; 
  68.     {
  69.       mem [ curlist .tailfield ] .hh .v.RH = newglue ( 8 ) ; 
  70.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  71.     } 
  72.     {
  73.       mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( -1073741824L ) ; 
  74.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  75.     } 
  76.     buildpage () ; 
  77.   } 
  78.   Result = false ; 
  79.   return(Result) ; 
  80. appendglue () {
  81.     appendglue_regmem 
  82.   smallnumber s  ; 
  83.   s = curchr ; 
  84.   switch ( s ) 
  85.   {case 0 : 
  86.     curval = 4 ; 
  87.     break ; 
  88.   case 1 : 
  89.     curval = 8 ; 
  90.     break ; 
  91.   case 2 : 
  92.     curval = 12 ; 
  93.     break ; 
  94.   case 3 : 
  95.     curval = 16 ; 
  96.     break ; 
  97.   case 4 : 
  98.     scanglue ( 2 ) ; 
  99.     break ; 
  100.   case 5 : 
  101.     scanglue ( 3 ) ; 
  102.     break ; 
  103.   } 
  104.   {
  105.     mem [ curlist .tailfield ] .hh .v.RH = newglue ( curval ) ; 
  106.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  107.   } 
  108.   if ( s >= 4 ) 
  109.   {
  110.     decr ( mem [ curval ] .hh .v.RH ) ; 
  111.     if ( s > 4 ) 
  112.     mem [ curlist .tailfield ] .hh.b1 = 99 ; 
  113.   } 
  114. appendkern () {
  115.     appendkern_regmem 
  116.   quarterword s  ; 
  117.   s = curchr ; 
  118.   scandimen ( s == 99 , false , false ) ; 
  119.   {
  120.     mem [ curlist .tailfield ] .hh .v.RH = newkern ( curval ) ; 
  121.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  122.   } 
  123.   mem [ curlist .tailfield ] .hh.b1 = s ; 
  124. offsave () {
  125.     offsave_regmem 
  126.   halfword p  ; 
  127.   if ( curgroup == 0 ) 
  128.   {
  129.     {
  130.       if ( interaction == 3 ) 
  131.       wakeupterminal () ; 
  132.       printnl ( 133 ) ; 
  133.       print ( 633 ) ; 
  134.     } 
  135.     printcmdchr ( curcmd , curchr ) ; 
  136.     {
  137.       helpptr = 1 ; 
  138.       helpline [ 0 ] = 891 ; 
  139.     } 
  140.     error () ; 
  141.   } 
  142.   else {
  143.       
  144.     backinput () ; 
  145.     p = getavail () ; 
  146.     mem [ memtop - 3 ] .hh .v.RH = p ; 
  147.     {
  148.       if ( interaction == 3 ) 
  149.       wakeupterminal () ; 
  150.       printnl ( 133 ) ; 
  151.       print ( 483 ) ; 
  152.     } 
  153.     switch ( curgroup ) 
  154.     {case 14 : 
  155.       {
  156.     mem [ p ] .hh .v.LH = 7356 ; 
  157.     printesc ( 375 ) ; 
  158.       } 
  159.       break ; 
  160.     case 15 : 
  161.       {
  162.     mem [ p ] .hh .v.LH = 804 ; 
  163.     printchar ( 36 ) ; 
  164.       } 
  165.       break ; 
  166.     case 16 : 
  167.       {
  168.     mem [ p ] .hh .v.LH = 7357 ; 
  169.     mem [ p ] .hh .v.RH = getavail () ; 
  170.     p = mem [ p ] .hh .v.RH ; 
  171.     mem [ p ] .hh .v.LH = 3118 ; 
  172.     printesc ( 890 ) ; 
  173.       } 
  174.       break ; 
  175.       default: 
  176.       {
  177.     mem [ p ] .hh .v.LH = 637 ; 
  178.     printchar ( 125 ) ; 
  179.       } 
  180.       break ; 
  181.     } 
  182.     print ( 484 ) ; 
  183.     begintokenlist ( mem [ memtop - 3 ] .hh .v.RH , 4 ) ; 
  184.     {
  185.       helpptr = 5 ; 
  186.       helpline [ 4 ] = 885 ; 
  187.       helpline [ 3 ] = 886 ; 
  188.       helpline [ 2 ] = 887 ; 
  189.       helpline [ 1 ] = 888 ; 
  190.       helpline [ 0 ] = 889 ; 
  191.     } 
  192.     error () ; 
  193.   } 
  194. extrarightbrace () {
  195.     extrarightbrace_regmem 
  196.   {
  197.     if ( interaction == 3 ) 
  198.     wakeupterminal () ; 
  199.     printnl ( 133 ) ; 
  200.     print ( 896 ) ; 
  201.   } 
  202.   switch ( curgroup ) 
  203.   {case 14 : 
  204.     printesc ( 375 ) ; 
  205.     break ; 
  206.   case 15 : 
  207.     printchar ( 36 ) ; 
  208.     break ; 
  209.   case 16 : 
  210.     printesc ( 730 ) ; 
  211.     break ; 
  212.   } 
  213.   {
  214.     helpptr = 5 ; 
  215.     helpline [ 4 ] = 897 ; 
  216.     helpline [ 3 ] = 898 ; 
  217.     helpline [ 2 ] = 899 ; 
  218.     helpline [ 1 ] = 900 ; 
  219.     helpline [ 0 ] = 901 ; 
  220.   } 
  221.   error () ; 
  222.   incr ( alignstate ) ; 
  223. normalparagraph () {
  224.     normalparagraph_regmem 
  225.   if ( eqtb [ 5286 ] .cint != 0 ) 
  226.   eqworddefine ( 5286 , 0 ) ; 
  227.   if ( eqtb [ 5718 ] .cint != 0 ) 
  228.   eqworddefine ( 5718 , 0 ) ; 
  229.   if ( eqtb [ 5308 ] .cint != 1 ) 
  230.   eqworddefine ( 5308 , 1 ) ; 
  231.   if ( eqtb [ 4056 ] .hh .v.RH != 0 ) 
  232.   eqdefine ( 4056 , 117 , 0 ) ; 
  233. boxend () {
  234.     boxend_regmem 
  235.   halfword p  ; 
  236.   if ( savestack [ saveptr + 0 ] .cint < 1073741824L ) 
  237.   {
  238.     if ( curbox != 0 ) 
  239.     {
  240.       mem [ curbox + 4 ] .cint = savestack [ saveptr + 0 ] .cint ; 
  241.       if ( abs ( curlist .modefield ) == 1 ) 
  242.       {
  243.     appendtovlist ( curbox ) ; 
  244.     if ( adjusttail != 0 ) 
  245.     {
  246.       if ( memtop - 5 != adjusttail ) 
  247.       {
  248.         mem [ curlist .tailfield ] .hh .v.RH = mem [ memtop - 5 ] .hh 
  249.         .v.RH ; 
  250.         curlist .tailfield = adjusttail ; 
  251.       } 
  252.       adjusttail = 0 ; 
  253.     } 
  254.     if ( curlist .modefield > 0 ) 
  255.     buildpage () ; 
  256.       } 
  257.       else {
  258.       
  259.     if ( abs ( curlist .modefield ) == 101 ) 
  260.     curlist .auxfield = 1000 ; 
  261.     else {
  262.         
  263.       p = newnoad () ; 
  264.       mem [ p + 1 ] .hh .v.RH = 2 ; 
  265.       mem [ p + 1 ] .hh .v.LH = curbox ; 
  266.       curbox = p ; 
  267.     } 
  268.     mem [ curlist .tailfield ] .hh .v.RH = curbox ; 
  269.     curlist .tailfield = curbox ; 
  270.       } 
  271.     } 
  272.   } 
  273.   else if ( savestack [ saveptr + 0 ] .cint < 1073742336L ) 
  274.   if ( savestack [ saveptr + 0 ] .cint < 1073742080L ) 
  275.   eqdefine ( -1073737502L + savestack [ saveptr + 0 ] .cint , 118 , curbox ) ; 
  276.   else geqdefine ( -1073737758L + savestack [ saveptr + 0 ] .cint , 118 , 
  277.   curbox ) ; 
  278.   else if ( curbox != 0 ) 
  279.   if ( savestack [ saveptr + 0 ] .cint > 1073742336L ) 
  280.   {
  281.     do {
  282.     getxtoken () ; 
  283.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  284.     if ( ( ( curcmd == 26 ) && ( abs ( curlist .modefield ) != 1 ) ) || ( ( 
  285.     curcmd == 27 ) && ( abs ( curlist .modefield ) == 1 ) ) || ( ( curcmd == 
  286.     28 ) && ( abs ( curlist .modefield ) == 201 ) ) ) 
  287.     {
  288.       appendglue () ; 
  289.       mem [ curlist .tailfield ] .hh.b1 = savestack [ saveptr + 0 ] .cint - ( 
  290.       1073742237L ) ; 
  291.       mem [ curlist .tailfield + 1 ] .hh .v.RH = curbox ; 
  292.     } 
  293.     else {
  294.     
  295.       {
  296.     if ( interaction == 3 ) 
  297.     wakeupterminal () ; 
  298.     printnl ( 133 ) ; 
  299.     print ( 914 ) ; 
  300.       } 
  301.       {
  302.     helpptr = 3 ; 
  303.     helpline [ 2 ] = 915 ; 
  304.     helpline [ 1 ] = 916 ; 
  305.     helpline [ 0 ] = 917 ; 
  306.       } 
  307.       backerror () ; 
  308.       flushnodelist ( curbox ) ; 
  309.     } 
  310.   } 
  311.   else shipout ( curbox ) ; 
  312. beginbox () {
  313.     /* 10 30 */ beginbox_regmem 
  314.   halfword p, q  ; 
  315.   quarterword m  ; 
  316.   halfword k  ; 
  317.   eightbits n  ; 
  318.   switch ( curchr ) 
  319.   {case 0 : 
  320.     {
  321.       scaneightbitint () ; 
  322.       curbox = eqtb [ 4322 + curval ] .hh .v.RH ; 
  323.       eqtb [ 4322 + curval ] .hh .v.RH = 0 ; 
  324.     } 
  325.     break ; 
  326.   case 1 : 
  327.     {
  328.       scaneightbitint () ; 
  329.       curbox = copynodelist ( eqtb [ 4322 + curval ] .hh .v.RH ) ; 
  330.     } 
  331.     break ; 
  332.   case 2 : 
  333.     {
  334.       curbox = 0 ; 
  335.       if ( abs ( curlist .modefield ) == 201 ) 
  336.       {
  337.     youcant () ; 
  338.     {
  339.       helpptr = 1 ; 
  340.       helpline [ 0 ] = 918 ; 
  341.     } 
  342.     error () ; 
  343.       } 
  344.       else if ( ( curlist .modefield == 1 ) && ( curlist .headfield == curlist 
  345.       .tailfield ) ) 
  346.       {
  347.     youcant () ; 
  348.     {
  349.       helpptr = 2 ; 
  350.       helpline [ 1 ] = 919 ; 
  351.       helpline [ 0 ] = 920 ; 
  352.     } 
  353.     error () ; 
  354.       } 
  355.       else {
  356.       
  357.     if ( ! ( curlist .tailfield >= himemmin ) ) 
  358.     if ( ( mem [ curlist .tailfield ] .hh.b0 == 0 ) || ( mem [ curlist 
  359.     .tailfield ] .hh.b0 == 1 ) ) 
  360.     {
  361.       q = curlist .headfield ; 
  362.       do {
  363.           p = q ; 
  364.         if ( ! ( q >= himemmin ) ) 
  365.         if ( mem [ q ] .hh.b0 == 7 ) 
  366.         {
  367.           {register integer for_end; m = 1 ; for_end = mem [ q ] .hh.b1 
  368.           ; if ( m <= for_end) do 
  369.         p = mem [ p ] .hh .v.RH ; 
  370.           while ( m++ < for_end ) ; } 
  371.           if ( p == curlist .tailfield ) 
  372.           goto lab30 ; 
  373.         } 
  374.         q = mem [ p ] .hh .v.RH ; 
  375.       } while ( ! ( q == curlist .tailfield ) ) ; 
  376.       curbox = curlist .tailfield ; 
  377.       mem [ curbox + 4 ] .cint = 0 ; 
  378.       curlist .tailfield = p ; 
  379.       mem [ p ] .hh .v.RH = 0 ; 
  380.       lab30: ; 
  381.     } 
  382.       } 
  383.     } 
  384.     break ; 
  385.   case 3 : 
  386.     {
  387.       scaneightbitint () ; 
  388.       n = curval ; 
  389.       if ( ! scankeyword ( 695 ) ) 
  390.       {
  391.     {
  392.       if ( interaction == 3 ) 
  393.       wakeupterminal () ; 
  394.       printnl ( 133 ) ; 
  395.       print ( 921 ) ; 
  396.     } 
  397.     {
  398.       helpptr = 2 ; 
  399.       helpline [ 1 ] = 922 ; 
  400.       helpline [ 0 ] = 923 ; 
  401.     } 
  402.     error () ; 
  403.       } 
  404.       scandimen ( false , false , false ) ; 
  405.       curbox = vsplit ( n , curval ) ; 
  406.     } 
  407.     break ; 
  408.     default: 
  409.     {
  410.       k = curchr - 4 ; 
  411.       incr ( saveptr ) ; 
  412.       scanspec () ; 
  413.       if ( k == 101 ) 
  414.       if ( ( savestack [ saveptr - 3 ] .cint < 1073741824L ) && ( abs ( 
  415.       curlist .modefield ) == 1 ) ) 
  416.       newsavelevel ( 3 ) ; 
  417.       else newsavelevel ( 2 ) ; 
  418.       else {
  419.       
  420.     if ( k == 1 ) 
  421.     newsavelevel ( 4 ) ; 
  422.     else {
  423.         
  424.       newsavelevel ( 5 ) ; 
  425.       k = 1 ; 
  426.     } 
  427.     normalparagraph () ; 
  428.       } 
  429.       pushnest () ; 
  430.       curlist .modefield = - (integer) k ; 
  431.       if ( k == 1 ) 
  432.       {
  433.     curlist .auxfield = -65536000L ; 
  434.     if ( eqtb [ 4062 ] .hh .v.RH != 0 ) 
  435.     begintokenlist ( eqtb [ 4062 ] .hh .v.RH , 11 ) ; 
  436.       } 
  437.       else {
  438.       
  439.     curlist .auxfield = 1000 ; 
  440.     if ( eqtb [ 4061 ] .hh .v.RH != 0 ) 
  441.     begintokenlist ( eqtb [ 4061 ] .hh .v.RH , 10 ) ; 
  442.       } 
  443.       return ; 
  444.     } 
  445.     break ; 
  446.   } 
  447.   boxend () ; 
  448. scanbox () {
  449.     scanbox_regmem 
  450.   do {
  451.       getxtoken () ; 
  452.   } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  453.   if ( curcmd == 20 ) 
  454.   beginbox () ; 
  455.   else if ( ( savestack [ saveptr + 0 ] .cint >= 1073742337L ) && ( ( curcmd 
  456.   == 36 ) || ( curcmd == 35 ) ) ) 
  457.   {
  458.     curbox = scanrulespec () ; 
  459.     boxend () ; 
  460.   } 
  461.   else {
  462.       
  463.     {
  464.       if ( interaction == 3 ) 
  465.       wakeupterminal () ; 
  466.       printnl ( 133 ) ; 
  467.       print ( 924 ) ; 
  468.     } 
  469.     {
  470.       helpptr = 3 ; 
  471.       helpline [ 2 ] = 925 ; 
  472.       helpline [ 1 ] = 926 ; 
  473.       helpline [ 0 ] = 927 ; 
  474.     } 
  475.     backerror () ; 
  476.   } 
  477. zpackage ( c ) 
  478. smallnumber c ; 
  479. {package_regmem 
  480.   scaled h  ; 
  481.   halfword p  ; 
  482.   scaled d  ; 
  483.   d = eqtb [ 5708 ] .cint ; 
  484.   unsave () ; 
  485.   saveptr = saveptr - 3 ; 
  486.   if ( curlist .modefield == -101 ) 
  487.   curbox = hpack ( mem [ curlist .headfield ] .hh .v.RH , savestack [ saveptr 
  488.   + 2 ] .cint , savestack [ saveptr + 1 ] .cint ) ; 
  489.   else {
  490.       
  491.     curbox = vpackage ( mem [ curlist .headfield ] .hh .v.RH , savestack [ 
  492.     saveptr + 2 ] .cint , savestack [ saveptr + 1 ] .cint , d ) ; 
  493.     if ( c == 4 ) 
  494.     {
  495.       h = 0 ; 
  496.       p = mem [ curbox + 5 ] .hh .v.RH ; 
  497.       if ( p != 0 ) 
  498.       if ( mem [ p ] .hh.b0 <= 2 ) 
  499.       h = mem [ p + 3 ] .cint ; 
  500.       mem [ curbox + 2 ] .cint = mem [ curbox + 2 ] .cint - h + mem [ curbox + 
  501.       3 ] .cint ; 
  502.       mem [ curbox + 3 ] .cint = h ; 
  503.     } 
  504.   } 
  505.   popnest () ; 
  506.   boxend () ; 
  507. znewgraf ( indented ) 
  508. boolean indented ; 
  509. {newgraf_regmem 
  510.   curlist .pgfield = 0 ; 
  511.   if ( ( curlist .modefield == 1 ) || ( curlist .headfield != curlist 
  512.   .tailfield ) ) 
  513.   {
  514.     mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( 2 ) ; 
  515.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  516.   } 
  517.   pushnest () ; 
  518.   curlist .modefield = 101 ; 
  519.   curlist .auxfield = 1000 ; 
  520.   if ( indented ) 
  521.   {
  522.     curlist .tailfield = newnullbox () ; 
  523.     mem [ curlist .headfield ] .hh .v.RH = curlist .tailfield ; 
  524.     mem [ curlist .tailfield + 1 ] .cint = eqtb [ 5701 ] .cint ; 
  525.   } 
  526.   if ( eqtb [ 4058 ] .hh .v.RH != 0 ) 
  527.   begintokenlist ( eqtb [ 4058 ] .hh .v.RH , 7 ) ; 
  528.   if ( nestptr == 1 ) 
  529.   buildpage () ; 
  530. indentinhmode () {
  531.     indentinhmode_regmem 
  532.   halfword p, q  ; 
  533.   if ( curchr > 0 ) 
  534.   {
  535.     p = newnullbox () ; 
  536.     mem [ p + 1 ] .cint = eqtb [ 5701 ] .cint ; 
  537.     if ( abs ( curlist .modefield ) == 101 ) 
  538.     curlist .auxfield = 1000 ; 
  539.     else {
  540.     
  541.       q = newnoad () ; 
  542.       mem [ q + 1 ] .hh .v.RH = 2 ; 
  543.       mem [ q + 1 ] .hh .v.LH = p ; 
  544.       p = q ; 
  545.     } 
  546.     {
  547.       mem [ curlist .tailfield ] .hh .v.RH = p ; 
  548.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  549.     } 
  550.   } 
  551. headforvmode () {
  552.     headforvmode_regmem 
  553.   if ( curlist .modefield < 0 ) 
  554.   if ( curcmd != 36 ) 
  555.   offsave () ; 
  556.   else {
  557.       
  558.     {
  559.       if ( interaction == 3 ) 
  560.       wakeupterminal () ; 
  561.       printnl ( 133 ) ; 
  562.       print ( 541 ) ; 
  563.     } 
  564.     printesc ( 380 ) ; 
  565.     print ( 930 ) ; 
  566.     {
  567.       helpptr = 2 ; 
  568.       helpline [ 1 ] = 931 ; 
  569.       helpline [ 0 ] = 932 ; 
  570.     } 
  571.     error () ; 
  572.   } 
  573.   else {
  574.       
  575.     backinput () ; 
  576.     curtok = partoken ; 
  577.     backinput () ; 
  578.     curinput .indexfield = 4 ; 
  579.   } 
  580. endgraf () {
  581.     endgraf_regmem 
  582.   if ( curlist .modefield == 101 ) 
  583.   {
  584.     if ( curlist .headfield == curlist .tailfield ) 
  585.     popnest () ; 
  586.     else linebreak ( eqtb [ 5273 ] .cint ) ; 
  587.     normalparagraph () ; 
  588.     errorcount = 0 ; 
  589.   } 
  590. begininsertoradjust () {
  591.     begininsertoradjust_regmem 
  592.   if ( curcmd == 38 ) 
  593.   curval = 255 ; 
  594.   else {
  595.       
  596.     scaneightbitint () ; 
  597.     if ( curval == 255 ) 
  598.     {
  599.       {
  600.     if ( interaction == 3 ) 
  601.     wakeupterminal () ; 
  602.     printnl ( 133 ) ; 
  603.     print ( 933 ) ; 
  604.       } 
  605.       printesc ( 198 ) ; 
  606.       printint ( 255 ) ; 
  607.       {
  608.     helpptr = 1 ; 
  609.     helpline [ 0 ] = 934 ; 
  610.       } 
  611.       error () ; 
  612.       curval = 0 ; 
  613.     } 
  614.   } 
  615.   savestack [ saveptr + 0 ] .cint = curval ; 
  616.   incr ( saveptr ) ; 
  617.   newsavelevel ( 11 ) ; 
  618.   scanleftbrace () ; 
  619.   normalparagraph () ; 
  620.   pushnest () ; 
  621.   curlist .modefield = -1 ; 
  622.   curlist .auxfield = -65536000L ; 
  623. makemark () {
  624.     makemark_regmem 
  625.   halfword p  ; 
  626.   p = scantoks ( false , true ) ; 
  627.   p = getnode ( 2 ) ; 
  628.   mem [ p ] .hh.b0 = 4 ; 
  629.   mem [ p ] .hh.b1 = 0 ; 
  630.   mem [ p + 1 ] .cint = defref ; 
  631.   mem [ curlist .tailfield ] .hh .v.RH = p ; 
  632.   curlist .tailfield = p ; 
  633. appendpenalty () {
  634.     appendpenalty_regmem 
  635.   scanint () ; 
  636.   {
  637.     mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( curval ) ; 
  638.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  639.   } 
  640.   if ( curlist .modefield == 1 ) 
  641.   buildpage () ; 
  642. deletelast () {
  643.     /* 10 */ deletelast_regmem 
  644.   halfword p, q  ; 
  645.   quarterword m  ; 
  646.   if ( ( curlist .modefield == 1 ) && ( curlist .tailfield == curlist 
  647.   .headfield ) ) 
  648.   {
  649.     if ( ( curchr != 10 ) || ( lastglue != 65535L ) ) 
  650.     {
  651.       youcant () ; 
  652.       {
  653.     helpptr = 2 ; 
  654.     helpline [ 1 ] = 919 ; 
  655.     helpline [ 0 ] = 935 ; 
  656.       } 
  657.       if ( curchr == 11 ) 
  658.       helpline [ 0 ] = ( 936 ) ; 
  659.       else if ( curchr != 10 ) 
  660.       helpline [ 0 ] = ( 937 ) ; 
  661.       error () ; 
  662.     } 
  663.   } 
  664.   else {
  665.       
  666.     if ( ! ( curlist .tailfield >= himemmin ) ) 
  667.     if ( mem [ curlist .tailfield ] .hh.b0 == curchr ) 
  668.     {
  669.       q = curlist .headfield ; 
  670.       do {
  671.       p = q ; 
  672.     if ( ! ( q >= himemmin ) ) 
  673.     if ( mem [ q ] .hh.b0 == 7 ) 
  674.     {
  675.       {register integer for_end; m = 1 ; for_end = mem [ q ] .hh.b1 
  676.       ; if ( m <= for_end) do 
  677.         p = mem [ p ] .hh .v.RH ; 
  678.       while ( m++ < for_end ) ; } 
  679.       if ( p == curlist .tailfield ) 
  680.       return ; 
  681.     } 
  682.     q = mem [ p ] .hh .v.RH ; 
  683.       } while ( ! ( q == curlist .tailfield ) ) ; 
  684.       mem [ p ] .hh .v.RH = 0 ; 
  685.       flushnodelist ( curlist .tailfield ) ; 
  686.       curlist .tailfield = p ; 
  687.     } 
  688.   } 
  689. unpackage () {
  690.     /* 10 */ unpackage_regmem 
  691.   halfword p  ; 
  692.   schar c  ; 
  693.   c = curchr ; 
  694.   scaneightbitint () ; 
  695.   p = eqtb [ 4322 + curval ] .hh .v.RH ; 
  696.   if ( p == 0 ) 
  697.   return ; 
  698.   if ( ( abs ( curlist .modefield ) == 201 ) || ( ( abs ( curlist .modefield ) 
  699.   == 1 ) && ( mem [ p ] .hh.b0 != 1 ) ) || ( ( abs ( curlist .modefield ) == 
  700.   101 ) && ( mem [ p ] .hh.b0 != 0 ) ) ) 
  701.   {
  702.     {
  703.       if ( interaction == 3 ) 
  704.       wakeupterminal () ; 
  705.       printnl ( 133 ) ; 
  706.       print ( 945 ) ; 
  707.     } 
  708.     {
  709.       helpptr = 3 ; 
  710.       helpline [ 2 ] = 946 ; 
  711.       helpline [ 1 ] = 947 ; 
  712.       helpline [ 0 ] = 948 ; 
  713.     } 
  714.     error () ; 
  715.     return ; 
  716.   } 
  717.   if ( c == 1 ) 
  718.   mem [ curlist .tailfield ] .hh .v.RH = copynodelist ( mem [ p + 5 ] .hh 
  719.   .v.RH ) ; 
  720.   else {
  721.       
  722.     mem [ curlist .tailfield ] .hh .v.RH = mem [ p + 5 ] .hh .v.RH ; 
  723.     eqtb [ 4322 + curval ] .hh .v.RH = 0 ; 
  724.     freenode ( p , 7 ) ; 
  725.   } 
  726.   while ( mem [ curlist .tailfield ] .hh .v.RH != 0 ) curlist .tailfield = mem 
  727.   [ curlist .tailfield ] .hh .v.RH ; 
  728. appenditaliccorrecti () {
  729.     /* 10 */ appenditaliccorrecti_regmem 
  730.   halfword p  ; 
  731.   internalfontnumber f  ; 
  732.   if ( curlist .tailfield != curlist .headfield ) 
  733.   {
  734.     if ( ( curlist .tailfield >= himemmin ) ) 
  735.     p = curlist .tailfield ; 
  736.     else if ( mem [ curlist .tailfield ] .hh.b0 == 6 ) 
  737.     p = curlist .tailfield + 1 ; 
  738.     else return ; 
  739.     f = mem [ p ] .hh.b0 ; 
  740.     {
  741.       mem [ curlist .tailfield ] .hh .v.RH = newkern ( fontinfo [ italicbase [ 
  742.       f ] + ( fontinfo [ charbase [ f ] + mem [ p ] .hh.b1 ] .qqqq .b2 ) / 4 ] 
  743.       .cint ) ; 
  744.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  745.     } 
  746.     mem [ curlist .tailfield ] .hh.b1 = 1 ; 
  747.   } 
  748. appenddiscretionary () {
  749.     appenddiscretionary_regmem 
  750.   integer c  ; 
  751.   {
  752.     mem [ curlist .tailfield ] .hh .v.RH = newdisc () ; 
  753.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  754.   } 
  755.   if ( curchr == 1 ) 
  756.   {
  757.     c = hyphenchar [ eqtb [ 4578 ] .hh .v.RH ] ; 
  758.     if ( c >= 0 ) 
  759.     if ( c < 256 ) 
  760.     mem [ curlist .tailfield + 1 ] .hh .v.LH = newcharacter ( eqtb [ 4578 ] 
  761.     .hh .v.RH , c ) ; 
  762.   } 
  763.   else {
  764.       
  765.     incr ( saveptr ) ; 
  766.     savestack [ saveptr - 1 ] .cint = 0 ; 
  767.     scanleftbrace () ; 
  768.     newsavelevel ( 10 ) ; 
  769.     pushnest () ; 
  770.     curlist .modefield = -101 ; 
  771.     curlist .auxfield = 1000 ; 
  772.   } 
  773. builddiscretionary () {
  774.     /* 30 10 */ builddiscretionary_regmem 
  775.   halfword p, q  ; 
  776.   integer n  ; 
  777.   unsave () ; 
  778.   q = curlist .headfield ; 
  779.   p = mem [ q ] .hh .v.RH ; 
  780.   n = 0 ; 
  781.   while ( p != 0 ) {
  782.       
  783.     if ( ! ( p >= himemmin ) ) 
  784.     if ( mem [ p ] .hh.b0 > 2 ) 
  785.     if ( mem [ p ] .hh.b0 != 11 ) 
  786.     if ( mem [ p ] .hh.b0 != 6 ) 
  787.     {
  788.       {
  789.     if ( interaction == 3 ) 
  790.     wakeupterminal () ; 
  791.     printnl ( 133 ) ; 
  792.     print ( 955 ) ; 
  793.       } 
  794.       {
  795.     helpptr = 1 ; 
  796.     helpline [ 0 ] = 956 ; 
  797.       } 
  798.       error () ; 
  799.       begindiagnostic () ; 
  800.       printnl ( 957 ) ; 
  801.       showbox ( p ) ; 
  802.       enddiagnostic ( true ) ; 
  803.       flushnodelist ( p ) ; 
  804.       mem [ q ] .hh .v.RH = 0 ; 
  805.       goto lab30 ; 
  806.     } 
  807.     q = p ; 
  808.     p = mem [ q ] .hh .v.RH ; 
  809.     incr ( n ) ; 
  810.   } 
  811.   lab30: ; 
  812.   p = mem [ curlist .headfield ] .hh .v.RH ; 
  813.   popnest () ; 
  814.   switch ( savestack [ saveptr - 1 ] .cint ) 
  815.   {case 0 : 
  816.     mem [ curlist .tailfield + 1 ] .hh .v.LH = p ; 
  817.     break ; 
  818.   case 1 : 
  819.     mem [ curlist .tailfield + 1 ] .hh .v.RH = p ; 
  820.     break ; 
  821.   case 2 : 
  822.     {
  823.       if ( ( n > 0 ) && ( abs ( curlist .modefield ) == 201 ) ) 
  824.       {
  825.     {
  826.       if ( interaction == 3 ) 
  827.       wakeupterminal () ; 
  828.       printnl ( 133 ) ; 
  829.       print ( 949 ) ; 
  830.     } 
  831.     printesc ( 217 ) ; 
  832.     {
  833.       helpptr = 2 ; 
  834.       helpline [ 1 ] = 950 ; 
  835.       helpline [ 0 ] = 951 ; 
  836.     } 
  837.     flushnodelist ( p ) ; 
  838.     n = 0 ; 
  839.     error () ; 
  840.       } 
  841.       else mem [ curlist .tailfield ] .hh .v.RH = p ; 
  842.       if ( n <= 255 ) 
  843.       mem [ curlist .tailfield ] .hh.b1 = n ; 
  844.       else {
  845.       
  846.     {
  847.       if ( interaction == 3 ) 
  848.       wakeupterminal () ; 
  849.       printnl ( 133 ) ; 
  850.       print ( 952 ) ; 
  851.     } 
  852.     {
  853.       helpptr = 2 ; 
  854.       helpline [ 1 ] = 953 ; 
  855.       helpline [ 0 ] = 954 ; 
  856.     } 
  857.     error () ; 
  858.       } 
  859.       if ( n > 0 ) 
  860.       curlist .tailfield = q ; 
  861.       decr ( saveptr ) ; 
  862.       return ; 
  863.     } 
  864.     break ; 
  865.   } 
  866.   incr ( savestack [ saveptr - 1 ] .cint ) ; 
  867.   scanleftbrace () ; 
  868.   newsavelevel ( 10 ) ; 
  869.   pushnest () ; 
  870.   curlist .modefield = -101 ; 
  871.   curlist .auxfield = 1000 ; 
  872. makeaccent () {
  873.     makeaccent_regmem 
  874.   real s, t  ; 
  875.   halfword p, q, r  ; 
  876.   internalfontnumber f  ; 
  877.   scaled a, h, x, w, delta  ; 
  878.   fourquarters i  ; 
  879.   scancharnum () ; 
  880.   f = eqtb [ 4578 ] .hh .v.RH ; 
  881.   p = newcharacter ( f , curval ) ; 
  882.   if ( p != 0 ) 
  883.   {
  884.     x = fontinfo [ 5 + parambase [ f ] ] .cint ; 
  885.     s = fontinfo [ 1 + parambase [ f ] ] .cint / ((double) 65536.0 ) ; 
  886.     a = fontinfo [ widthbase [ f ] + fontinfo [ charbase [ f ] + mem [ p ] 
  887.     .hh.b1 ] .qqqq .b0 ] .cint ; 
  888.     doassignments () ; 
  889.     q = 0 ; 
  890.     f = eqtb [ 4578 ] .hh .v.RH ; 
  891.     if ( ( curcmd == 11 ) || ( curcmd == 12 ) || ( curcmd == 67 ) ) 
  892.     q = newcharacter ( f , curchr ) ; 
  893.     else if ( curcmd == 16 ) 
  894.     {
  895.       scancharnum () ; 
  896.       q = newcharacter ( f , curval ) ; 
  897.     } 
  898.     else backinput () ; 
  899.     if ( q != 0 ) 
  900.     {
  901.       t = fontinfo [ 1 + parambase [ f ] ] .cint / ((double) 65536.0 ) ; 
  902.       i = fontinfo [ charbase [ f ] + mem [ q ] .hh.b1 ] .qqqq ; 
  903.       w = fontinfo [ widthbase [ f ] + i .b0 ] .cint ; 
  904.       h = fontinfo [ heightbase [ f ] + ( i .b1 ) / 16 ] .cint ; 
  905.       if ( h != x ) 
  906.       {
  907.     p = hpack ( p , 0 , 1 ) ; 
  908.     mem [ p + 4 ] .cint = x - h ; 
  909.       } 
  910.       delta = round ( ( w - a ) / ((double) 2.0 ) + h * t - x * s ) ; 
  911.       r = newkern ( delta ) ; 
  912.       mem [ r ] .hh.b1 = 2 ; 
  913.       mem [ curlist .tailfield ] .hh .v.RH = r ; 
  914.       mem [ r ] .hh .v.RH = p ; 
  915.       curlist .tailfield = newkern ( - (integer) a - delta ) ; 
  916.       mem [ curlist .tailfield ] .hh.b1 = 2 ; 
  917.       mem [ p ] .hh .v.RH = curlist .tailfield ; 
  918.       p = q ; 
  919.     } 
  920.     mem [ curlist .tailfield ] .hh .v.RH = p ; 
  921.     curlist .tailfield = p ; 
  922.     curlist .auxfield = 1000 ; 
  923.   } 
  924. alignerror () {
  925.     alignerror_regmem 
  926.   if ( abs ( alignstate ) > 2 ) 
  927.   {
  928.     {
  929.       if ( interaction == 3 ) 
  930.       wakeupterminal () ; 
  931.       printnl ( 133 ) ; 
  932.       print ( 962 ) ; 
  933.     } 
  934.     printcmdchr ( curcmd , curchr ) ; 
  935.     if ( curtok == 1062 ) 
  936.     {
  937.       {
  938.     helpptr = 6 ; 
  939.     helpline [ 5 ] = 963 ; 
  940.     helpline [ 4 ] = 964 ; 
  941.     helpline [ 3 ] = 965 ; 
  942.     helpline [ 2 ] = 966 ; 
  943.     helpline [ 1 ] = 967 ; 
  944.     helpline [ 0 ] = 968 ; 
  945.       } 
  946.     } 
  947.     else {
  948.     
  949.       {
  950.     helpptr = 5 ; 
  951.     helpline [ 4 ] = 963 ; 
  952.     helpline [ 3 ] = 969 ; 
  953.     helpline [ 2 ] = 966 ; 
  954.     helpline [ 1 ] = 967 ; 
  955.     helpline [ 0 ] = 968 ; 
  956.       } 
  957.     } 
  958.     error () ; 
  959.   } 
  960.   else {
  961.       
  962.     backinput () ; 
  963.     if ( alignstate < 0 ) 
  964.     {
  965.       {
  966.     if ( interaction == 3 ) 
  967.     wakeupterminal () ; 
  968.     printnl ( 133 ) ; 
  969.     print ( 515 ) ; 
  970.       } 
  971.       incr ( alignstate ) ; 
  972.       curtok = 379 ; 
  973.     } 
  974.     else {
  975.     
  976.       {
  977.     if ( interaction == 3 ) 
  978.     wakeupterminal () ; 
  979.     printnl ( 133 ) ; 
  980.     print ( 958 ) ; 
  981.       } 
  982.       decr ( alignstate ) ; 
  983.       curtok = 637 ; 
  984.     } 
  985.     {
  986.       helpptr = 3 ; 
  987.       helpline [ 2 ] = 959 ; 
  988.       helpline [ 1 ] = 960 ; 
  989.       helpline [ 0 ] = 961 ; 
  990.     } 
  991.     inserror () ; 
  992.   } 
  993. noalignerror () {
  994.     noalignerror_regmem 
  995.   {
  996.     if ( interaction == 3 ) 
  997.     wakeupterminal () ; 
  998.     printnl ( 133 ) ; 
  999.     print ( 962 ) ; 
  1000.   } 
  1001.   printesc ( 386 ) ; 
  1002.   {
  1003.     helpptr = 2 ; 
  1004.     helpline [ 1 ] = 970 ; 
  1005.     helpline [ 0 ] = 971 ; 
  1006.   } 
  1007.   error () ; 
  1008. omiterror () {
  1009.     omiterror_regmem 
  1010.   {
  1011.     if ( interaction == 3 ) 
  1012.     wakeupterminal () ; 
  1013.     printnl ( 133 ) ; 
  1014.     print ( 962 ) ; 
  1015.   } 
  1016.   printesc ( 388 ) ; 
  1017.   {
  1018.     helpptr = 2 ; 
  1019.     helpline [ 1 ] = 972 ; 
  1020.     helpline [ 0 ] = 971 ; 
  1021.   } 
  1022.   error () ; 
  1023. doendv () {
  1024.     doendv_regmem 
  1025.   if ( curgroup == 6 ) 
  1026.   {
  1027.     endgraf () ; 
  1028.     if ( fincol () ) 
  1029.     finrow () ; 
  1030.   } 
  1031.   else offsave () ; 
  1032. cserror () {
  1033.     cserror_regmem 
  1034.   {
  1035.     if ( interaction == 3 ) 
  1036.     wakeupterminal () ; 
  1037.     printnl ( 133 ) ; 
  1038.     print ( 633 ) ; 
  1039.   } 
  1040.   printesc ( 364 ) ; 
  1041.   {
  1042.     helpptr = 1 ; 
  1043.     helpline [ 0 ] = 974 ; 
  1044.   } 
  1045.   error () ; 
  1046. zpushmath ( c ) 
  1047. groupcode c ; 
  1048. {pushmath_regmem 
  1049.   pushnest () ; 
  1050.   curlist .modefield = -201 ; 
  1051.   curlist .auxfield = 0 ; 
  1052.   newsavelevel ( c ) ; 
  1053. initmath () {
  1054.     /* 21 40 45 30 */ initmath_regmem 
  1055.   scaled w  ; 
  1056.   scaled l  ; 
  1057.   scaled s  ; 
  1058.   halfword p  ; 
  1059.   halfword q  ; 
  1060.   internalfontnumber f  ; 
  1061.   integer n  ; 
  1062.   scaled v  ; 
  1063.   scaled d  ; 
  1064.   gettoken () ; 
  1065.   if ( ( curcmd == 3 ) && ( curlist .modefield > 0 ) ) 
  1066.   {
  1067.     if ( curlist .headfield == curlist .tailfield ) 
  1068.     {
  1069.       popnest () ; 
  1070.       w = -1073741823L ; 
  1071.     } 
  1072.     else {
  1073.     
  1074.       linebreak ( eqtb [ 5274 ] .cint ) ; 
  1075.       v = mem [ justbox + 4 ] .cint + 2 * fontinfo [ 6 + parambase [ eqtb [ 
  1076.       4578 ] .hh .v.RH ] ] .cint ; 
  1077.       w = -1073741823L ; 
  1078.       p = mem [ justbox + 5 ] .hh .v.RH ; 
  1079.       while ( p != 0 ) {
  1080.       
  1081.     lab21: if ( ( p >= himemmin ) ) 
  1082.     {
  1083.       f = mem [ p ] .hh.b0 ; 
  1084.       d = fontinfo [ widthbase [ f ] + fontinfo [ charbase [ f ] + mem [ p 
  1085.       ] .hh.b1 ] .qqqq .b0 ] .cint ; 
  1086.       goto lab40 ; 
  1087.     } 
  1088.     switch ( mem [ p ] .hh.b0 ) 
  1089.     {case 0 : 
  1090.     case 1 : 
  1091.     case 2 : 
  1092.       {
  1093.         d = mem [ p + 1 ] .cint ; 
  1094.         goto lab40 ; 
  1095.       } 
  1096.       break ; 
  1097.     case 6 : 
  1098.       {
  1099.         mem [ memtop - 12 ] = mem [ p + 1 ] ; 
  1100.         mem [ memtop - 12 ] .hh .v.RH = mem [ p ] .hh .v.RH ; 
  1101.         p = memtop - 12 ; 
  1102.         goto lab21 ; 
  1103.       } 
  1104.       break ; 
  1105.     case 11 : 
  1106.     case 9 : 
  1107.       d = mem [ p + 1 ] .cint ; 
  1108.       break ; 
  1109.     case 10 : 
  1110.       {
  1111.         q = mem [ p + 1 ] .hh .v.LH ; 
  1112.         d = mem [ q + 1 ] .cint ; 
  1113.         if ( mem [ justbox + 5 ] .hh.b0 == 1 ) 
  1114.         {
  1115.           if ( ( mem [ justbox + 5 ] .hh.b1 == mem [ q ] .hh.b0 ) && ( mem 
  1116.           [ q + 2 ] .cint != 0 ) ) 
  1117.           v = 1073741823L ; 
  1118.         } 
  1119.         else if ( mem [ justbox + 5 ] .hh.b0 == 2 ) 
  1120.         {
  1121.           if ( ( mem [ justbox + 5 ] .hh.b1 == mem [ q ] .hh.b1 ) && ( mem 
  1122.           [ q + 3 ] .cint != 0 ) ) 
  1123.           v = 1073741823L ; 
  1124.         } 
  1125.         if ( mem [ p ] .hh.b1 >= 100 ) 
  1126.         goto lab40 ; 
  1127.       } 
  1128.       break ; 
  1129.     case 8 : 
  1130.       d = 0 ; 
  1131.       break ; 
  1132.       default: 
  1133.       d = 0 ; 
  1134.       break ; 
  1135.     } 
  1136.     if ( v < 1073741823L ) 
  1137.     v = v + d ; 
  1138.     goto lab45 ; 
  1139.     lab40: if ( v < 1073741823L ) 
  1140.     {
  1141.       v = v + d ; 
  1142.       w = v ; 
  1143.     } 
  1144.     else {
  1145.         
  1146.       w = 1073741823L ; 
  1147.       goto lab30 ; 
  1148.     } 
  1149.     lab45: p = mem [ p ] .hh .v.RH ; 
  1150.       } 
  1151.       lab30: ; 
  1152.     } 
  1153.     if ( eqtb [ 4056 ] .hh .v.RH == 0 ) 
  1154.     if ( ( eqtb [ 5718 ] .cint != 0 ) && ( ( ( eqtb [ 5308 ] .cint >= 0 ) && ( 
  1155.     curlist .pgfield + 2 > eqtb [ 5308 ] .cint ) ) || ( curlist .pgfield + 1 < 
  1156.     - (integer) eqtb [ 5308 ] .cint ) ) ) 
  1157.     {
  1158.       l = eqtb [ 5704 ] .cint - abs ( eqtb [ 5718 ] .cint ) ; 
  1159.       if ( eqtb [ 5718 ] .cint > 0 ) 
  1160.       s = eqtb [ 5718 ] .cint ; 
  1161.       else s = 0 ; 
  1162.     } 
  1163.     else {
  1164.     
  1165.       l = eqtb [ 5704 ] .cint ; 
  1166.       s = 0 ; 
  1167.     } 
  1168.     else {
  1169.     
  1170.       n = mem [ eqtb [ 4056 ] .hh .v.RH ] .hh .v.LH ; 
  1171.       if ( curlist .pgfield + 2 >= n ) 
  1172.       p = eqtb [ 4056 ] .hh .v.RH + 2 * n ; 
  1173.       else p = eqtb [ 4056 ] .hh .v.RH + 2 * ( curlist .pgfield + 2 ) ; 
  1174.       s = mem [ p - 1 ] .cint ; 
  1175.       l = mem [ p ] .cint ; 
  1176.     } 
  1177.     pushmath ( 15 ) ; 
  1178.     curlist .modefield = 201 ; 
  1179.     eqworddefine ( 5311 , -1 ) ; 
  1180.     eqworddefine ( 5714 , w ) ; 
  1181.     eqworddefine ( 5715 , l ) ; 
  1182.     eqworddefine ( 5716 , s ) ; 
  1183.     if ( eqtb [ 4060 ] .hh .v.RH != 0 ) 
  1184.     begintokenlist ( eqtb [ 4060 ] .hh .v.RH , 9 ) ; 
  1185.     if ( nestptr == 1 ) 
  1186.     buildpage () ; 
  1187.   } 
  1188.   else {
  1189.       
  1190.     backinput () ; 
  1191.     {
  1192.       pushmath ( 15 ) ; 
  1193.       eqworddefine ( 5311 , -1 ) ; 
  1194.       if ( eqtb [ 4059 ] .hh .v.RH != 0 ) 
  1195.       begintokenlist ( eqtb [ 4059 ] .hh .v.RH , 8 ) ; 
  1196.     } 
  1197.   } 
  1198. starteqno () {
  1199.     starteqno_regmem 
  1200.   savestack [ saveptr + 0 ] .cint = curchr ; 
  1201.   incr ( saveptr ) ; 
  1202.   {
  1203.     pushmath ( 15 ) ; 
  1204.     eqworddefine ( 5311 , -1 ) ; 
  1205.     if ( eqtb [ 4059 ] .hh .v.RH != 0 ) 
  1206.     begintokenlist ( eqtb [ 4059 ] .hh .v.RH , 8 ) ; 
  1207.   } 
  1208. zscanmath ( p ) 
  1209. halfword p ; 
  1210. {/* 20 21 10 */ scanmath_regmem 
  1211.   integer c  ; 
  1212.   lab20: do {
  1213.       getxtoken () ; 
  1214.   } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1215.   lab21: switch ( curcmd ) 
  1216.   {case 11 : 
  1217.   case 12 : 
  1218.   case 67 : 
  1219.     if ( curchr >= 128 ) 
  1220.     c = curchr ; 
  1221.     else {
  1222.     
  1223.       c = eqtb [ 5139 + curchr ] .hh .v.RH ; 
  1224.       if ( c == 32768L ) 
  1225.       {
  1226.     {
  1227.       curcs = curchr + 1 ; 
  1228.       curcmd = eqtb [ curcs ] .hh.b0 ; 
  1229.       curchr = eqtb [ curcs ] .hh .v.RH ; 
  1230.       xtoken () ; 
  1231.       backinput () ; 
  1232.     } 
  1233.     goto lab20 ; 
  1234.       } 
  1235.     } 
  1236.     break ; 
  1237.   case 16 : 
  1238.     {
  1239.       scancharnum () ; 
  1240.       curchr = curval ; 
  1241.       curcmd = 67 ; 
  1242.       goto lab21 ; 
  1243.     } 
  1244.     break ; 
  1245.   case 17 : 
  1246.     {
  1247.       scanfifteenbitint () ; 
  1248.       c = curval ; 
  1249.     } 
  1250.     break ; 
  1251.   case 68 : 
  1252.     c = curchr ; 
  1253.     break ; 
  1254.   case 15 : 
  1255.     {
  1256.       scantwentysevenbitin () ; 
  1257.       c = curval / 4096 ; 
  1258.     } 
  1259.     break ; 
  1260.     default: 
  1261.     {
  1262.       backinput () ; 
  1263.       scanleftbrace () ; 
  1264.       savestack [ saveptr + 0 ] .cint = p ; 
  1265.       incr ( saveptr ) ; 
  1266.       pushmath ( 9 ) ; 
  1267.       return ; 
  1268.     } 
  1269.     break ; 
  1270.   } 
  1271.   mem [ p ] .hh .v.RH = 1 ; 
  1272.   mem [ p ] .hh.b1 = c % 256 ; 
  1273.   if ( ( c >= 28672 ) && ( ( eqtb [ 5311 ] .cint >= 0 ) && ( eqtb [ 5311 ] 
  1274.   .cint < 16 ) ) ) 
  1275.   mem [ p ] .hh.b0 = eqtb [ 5311 ] .cint ; 
  1276.   else mem [ p ] .hh.b0 = ( c / 256 ) % 16 ; 
  1277. zsetmathchar ( c ) 
  1278. integer c ; 
  1279. {setmathchar_regmem 
  1280.   halfword p  ; 
  1281.   if ( c >= 32768L ) 
  1282.   {
  1283.     curcs = curchr + 1 ; 
  1284.     curcmd = eqtb [ curcs ] .hh.b0 ; 
  1285.     curchr = eqtb [ curcs ] .hh .v.RH ; 
  1286.     xtoken () ; 
  1287.     backinput () ; 
  1288.   } 
  1289.   else {
  1290.       
  1291.     p = newnoad () ; 
  1292.     mem [ p + 1 ] .hh .v.RH = 1 ; 
  1293.     mem [ p + 1 ] .hh.b1 = c % 256 ; 
  1294.     mem [ p + 1 ] .hh.b0 = ( c / 256 ) % 16 ; 
  1295.     if ( c >= 28672 ) 
  1296.     {
  1297.       if ( ( ( eqtb [ 5311 ] .cint >= 0 ) && ( eqtb [ 5311 ] .cint < 16 ) ) ) 
  1298.       mem [ p + 1 ] .hh.b0 = eqtb [ 5311 ] .cint ; 
  1299.       mem [ p ] .hh.b0 = 16 ; 
  1300.     } 
  1301.     else mem [ p ] .hh.b0 = 16 + ( c / 4096 ) ; 
  1302.     mem [ curlist .tailfield ] .hh .v.RH = p ; 
  1303.     curlist .tailfield = p ; 
  1304.   } 
  1305. mathlimitswitch () {
  1306.     /* 10 */ mathlimitswitch_regmem 
  1307.   if ( curlist .headfield != curlist .tailfield ) 
  1308.   if ( mem [ curlist .tailfield ] .hh.b0 == 17 ) 
  1309.   {
  1310.     mem [ curlist .tailfield ] .hh.b1 = curchr ; 
  1311.     return ; 
  1312.   } 
  1313.   {
  1314.     if ( interaction == 3 ) 
  1315.     wakeupterminal () ; 
  1316.     printnl ( 133 ) ; 
  1317.     print ( 978 ) ; 
  1318.   } 
  1319.   {
  1320.     helpptr = 1 ; 
  1321.     helpline [ 0 ] = 979 ; 
  1322.   } 
  1323.   error () ; 
  1324. zscandelimiter ( p , r ) 
  1325. halfword p ; 
  1326. boolean r ; 
  1327. {scandelimiter_regmem 
  1328.   if ( r ) 
  1329.   scantwentysevenbitin () ; 
  1330.   else {
  1331.       
  1332.     do {
  1333.     getxtoken () ; 
  1334.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1335.     switch ( curcmd ) 
  1336.     {case 11 : 
  1337.     case 12 : 
  1338.       curval = eqtb [ 5573 + curchr ] .cint ; 
  1339.       break ; 
  1340.     case 15 : 
  1341.       scantwentysevenbitin () ; 
  1342.       break ; 
  1343.       default: 
  1344.       curval = -1 ; 
  1345.       break ; 
  1346.     } 
  1347.   } 
  1348.   if ( curval < 0 ) 
  1349.   {
  1350.     {
  1351.       if ( interaction == 3 ) 
  1352.       wakeupterminal () ; 
  1353.       printnl ( 133 ) ; 
  1354.       print ( 980 ) ; 
  1355.     } 
  1356.     {
  1357.       helpptr = 6 ; 
  1358.       helpline [ 5 ] = 981 ; 
  1359.       helpline [ 4 ] = 982 ; 
  1360.       helpline [ 3 ] = 983 ; 
  1361.       helpline [ 2 ] = 984 ; 
  1362.       helpline [ 1 ] = 985 ; 
  1363.       helpline [ 0 ] = 986 ; 
  1364.     } 
  1365.     backerror () ; 
  1366.     curval = 0 ; 
  1367.   } 
  1368.   mem [ p ] .qqqq .b0 = ( curval / 1048576L ) % 16 ; 
  1369.   mem [ p ] .qqqq .b1 = ( curval / 4096 ) % 256 ; 
  1370.   mem [ p ] .qqqq .b2 = ( curval / 256 ) % 16 ; 
  1371.   mem [ p ] .qqqq .b3 = curval % 256 ; 
  1372. mathradical () {
  1373.     mathradical_regmem 
  1374.   {
  1375.     mem [ curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ; 
  1376.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1377.   } 
  1378.   mem [ curlist .tailfield ] .hh.b0 = 24 ; 
  1379.   mem [ curlist .tailfield ] .hh.b1 = 0 ; 
  1380.   mem [ curlist .tailfield + 1 ] .hh = emptyfield ; 
  1381.   mem [ curlist .tailfield + 3 ] .hh = emptyfield ; 
  1382.   mem [ curlist .tailfield + 2 ] .hh = emptyfield ; 
  1383.   scandelimiter ( curlist .tailfield + 4 , true ) ; 
  1384.   scanmath ( curlist .tailfield + 1 ) ; 
  1385. mathac () {
  1386.     mathac_regmem 
  1387.   if ( curcmd == 45 ) 
  1388.   {
  1389.     {
  1390.       if ( interaction == 3 ) 
  1391.       wakeupterminal () ; 
  1392.       printnl ( 133 ) ; 
  1393.       print ( 987 ) ; 
  1394.     } 
  1395.     printesc ( 382 ) ; 
  1396.     print ( 988 ) ; 
  1397.     {
  1398.       helpptr = 2 ; 
  1399.       helpline [ 1 ] = 989 ; 
  1400.       helpline [ 0 ] = 990 ; 
  1401.     } 
  1402.     error () ; 
  1403.   } 
  1404.   {
  1405.     mem [ curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ; 
  1406.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1407.   } 
  1408.   mem [ curlist .tailfield ] .hh.b0 = 28 ; 
  1409.   mem [ curlist .tailfield ] .hh.b1 = 0 ; 
  1410.   mem [ curlist .tailfield + 1 ] .hh = emptyfield ; 
  1411.   mem [ curlist .tailfield + 3 ] .hh = emptyfield ; 
  1412.   mem [ curlist .tailfield + 2 ] .hh = emptyfield ; 
  1413.   mem [ curlist .tailfield + 4 ] .hh .v.RH = 1 ; 
  1414.   scanfifteenbitint () ; 
  1415.   mem [ curlist .tailfield + 4 ] .hh.b1 = curval % 256 ; 
  1416.   if ( ( curval >= 28672 ) && ( ( eqtb [ 5311 ] .cint >= 0 ) && ( eqtb [ 5311 
  1417.   ] .cint < 16 ) ) ) 
  1418.   mem [ curlist .tailfield + 4 ] .hh.b0 = eqtb [ 5311 ] .cint ; 
  1419.   else mem [ curlist .tailfield + 4 ] .hh.b0 = ( curval / 256 ) % 16 ; 
  1420.   scanmath ( curlist .tailfield + 1 ) ; 
  1421. appendchoices () {
  1422.     appendchoices_regmem 
  1423.   {
  1424.     mem [ curlist .tailfield ] .hh .v.RH = newchoice () ; 
  1425.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1426.   } 
  1427.   incr ( saveptr ) ; 
  1428.   savestack [ saveptr - 1 ] .cint = 0 ; 
  1429.   scanleftbrace () ; 
  1430.   pushmath ( 13 ) ; 
  1431. halfword zfinmlist ( p ) 
  1432. halfword p ; 
  1433. {register halfword Result; finmlist_regmem 
  1434.   halfword q  ; 
  1435.   if ( curlist .auxfield != 0 ) 
  1436.   {
  1437.     mem [ curlist .auxfield + 3 ] .hh .v.RH = 3 ; 
  1438.     mem [ curlist .auxfield + 3 ] .hh .v.LH = mem [ curlist .headfield ] .hh 
  1439.     .v.RH ; 
  1440.     if ( p == 0 ) 
  1441.     q = curlist .auxfield ; 
  1442.     else {
  1443.     
  1444.       q = mem [ curlist .auxfield + 2 ] .hh .v.LH ; 
  1445.       if ( mem [ q ] .hh.b0 != 30 ) 
  1446.       confusion ( 730 ) ; 
  1447.       mem [ curlist .auxfield + 2 ] .hh .v.LH = mem [ q ] .hh .v.RH ; 
  1448.       mem [ q ] .hh .v.RH = curlist .auxfield ; 
  1449.       mem [ curlist .auxfield ] .hh .v.RH = p ; 
  1450.     } 
  1451.   } 
  1452.   else {
  1453.       
  1454.     mem [ curlist .tailfield ] .hh .v.RH = p ; 
  1455.     q = mem [ curlist .headfield ] .hh .v.RH ; 
  1456.   } 
  1457.   popnest () ; 
  1458.   Result = q ; 
  1459.   return(Result) ; 
  1460. buildchoices () {
  1461.     /* 10 */ buildchoices_regmem 
  1462.   halfword p  ; 
  1463.   unsave () ; 
  1464.   p = finmlist ( 0 ) ; 
  1465.   switch ( savestack [ saveptr - 1 ] .cint ) 
  1466.   {case 0 : 
  1467.     mem [ curlist .tailfield + 1 ] .hh .v.LH = p ; 
  1468.     break ; 
  1469.   case 1 : 
  1470.     mem [ curlist .tailfield + 1 ] .hh .v.RH = p ; 
  1471.     break ; 
  1472.   case 2 : 
  1473.     mem [ curlist .tailfield + 2 ] .hh .v.LH = p ; 
  1474.     break ; 
  1475.   case 3 : 
  1476.     {
  1477.       mem [ curlist .tailfield + 2 ] .hh .v.RH = p ; 
  1478.       decr ( saveptr ) ; 
  1479.       return ; 
  1480.     } 
  1481.     break ; 
  1482.   } 
  1483.   incr ( savestack [ saveptr - 1 ] .cint ) ; 
  1484.   scanleftbrace () ; 
  1485.   pushmath ( 13 ) ; 
  1486. subsup () {
  1487.     subsup_regmem 
  1488.   smallnumber t  ; 
  1489.   halfword p  ; 
  1490.   t = 0 ; 
  1491.   p = 0 ; 
  1492.   if ( curlist .tailfield != curlist .headfield ) 
  1493.   if ( ( mem [ curlist .tailfield ] .hh.b0 >= 16 ) && ( mem [ curlist 
  1494.   .tailfield ] .hh.b0 < 30 ) ) 
  1495.   {
  1496.     p = curlist .tailfield + 2 + curcmd - 7 ; 
  1497.     t = mem [ p ] .hh .v.RH ; 
  1498.   } 
  1499.   if ( ( p == 0 ) || ( t != 0 ) ) 
  1500.   {
  1501.     {
  1502.       mem [ curlist .tailfield ] .hh .v.RH = newnoad () ; 
  1503.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1504.     } 
  1505.     p = curlist .tailfield + 2 + curcmd - 7 ; 
  1506.     if ( t != 0 ) 
  1507.     {
  1508.       if ( curcmd == 7 ) 
  1509.       {
  1510.     {
  1511.       if ( interaction == 3 ) 
  1512.       wakeupterminal () ; 
  1513.       printnl ( 133 ) ; 
  1514.       print ( 991 ) ; 
  1515.     } 
  1516.     {
  1517.       helpptr = 1 ; 
  1518.       helpline [ 0 ] = 992 ; 
  1519.     } 
  1520.       } 
  1521.       else {
  1522.       
  1523.     {
  1524.       if ( interaction == 3 ) 
  1525.       wakeupterminal () ; 
  1526.       printnl ( 133 ) ; 
  1527.       print ( 993 ) ; 
  1528.     } 
  1529.     {
  1530.       helpptr = 1 ; 
  1531.       helpline [ 0 ] = 994 ; 
  1532.     } 
  1533.       } 
  1534.       error () ; 
  1535.     } 
  1536.   } 
  1537.   scanmath ( p ) ; 
  1538. mathfraction () {
  1539.     mathfraction_regmem 
  1540.   smallnumber c  ; 
  1541.   c = curchr ; 
  1542.   if ( curlist .auxfield != 0 ) 
  1543.   {
  1544.     if ( c >= 3 ) 
  1545.     {
  1546.       scandelimiter ( memtop - 12 , false ) ; 
  1547.       scandelimiter ( memtop - 12 , false ) ; 
  1548.     } 
  1549.     if ( c % 3 == 0 ) 
  1550.     scandimen ( false , false , false ) ; 
  1551.     {
  1552.       if ( interaction == 3 ) 
  1553.       wakeupterminal () ; 
  1554.       printnl ( 133 ) ; 
  1555.       print ( 1001 ) ; 
  1556.     } 
  1557.     {
  1558.       helpptr = 3 ; 
  1559.       helpline [ 2 ] = 1002 ; 
  1560.       helpline [ 1 ] = 1003 ; 
  1561.       helpline [ 0 ] = 1004 ; 
  1562.     } 
  1563.     error () ; 
  1564.   } 
  1565.   else {
  1566.       
  1567.     curlist .auxfield = getnode ( 6 ) ; 
  1568.     mem [ curlist .auxfield ] .hh.b0 = 25 ; 
  1569.     mem [ curlist .auxfield ] .hh.b1 = 0 ; 
  1570.     mem [ curlist .auxfield + 2 ] .hh .v.RH = 3 ; 
  1571.     mem [ curlist .auxfield + 2 ] .hh .v.LH = mem [ curlist .headfield ] .hh 
  1572.     .v.RH ; 
  1573.     mem [ curlist .auxfield + 3 ] .hh = emptyfield ; 
  1574.     mem [ curlist .auxfield + 4 ] .qqqq = nulldelimiter ; 
  1575.     mem [ curlist .auxfield + 5 ] .qqqq = nulldelimiter ; 
  1576.     mem [ curlist .headfield ] .hh .v.RH = 0 ; 
  1577.     curlist .tailfield = curlist .headfield ; 
  1578.     if ( c >= 3 ) 
  1579.     {
  1580.       scandelimiter ( curlist .auxfield + 4 , false ) ; 
  1581.       scandelimiter ( curlist .auxfield + 5 , false ) ; 
  1582.     } 
  1583.     switch ( c % 3 ) 
  1584.     {case 0 : 
  1585.       {
  1586.     scandimen ( false , false , false ) ; 
  1587.     mem [ curlist .auxfield + 1 ] .cint = curval ; 
  1588.       } 
  1589.       break ; 
  1590.     case 1 : 
  1591.       mem [ curlist .auxfield + 1 ] .cint = 1073741824L ; 
  1592.       break ; 
  1593.     case 2 : 
  1594.       mem [ curlist .auxfield + 1 ] .cint = 0 ; 
  1595.       break ; 
  1596.     } 
  1597.   } 
  1598. mathleftright () {
  1599.     mathleftright_regmem 
  1600.   smallnumber t  ; 
  1601.   halfword p  ; 
  1602.   t = curchr ; 
  1603.   if ( ( t == 31 ) && ( curgroup != 16 ) ) 
  1604.   {
  1605.     if ( curgroup == 15 ) 
  1606.     {
  1607.       scandelimiter ( memtop - 12 , false ) ; 
  1608.       {
  1609.     if ( interaction == 3 ) 
  1610.     wakeupterminal () ; 
  1611.     printnl ( 133 ) ; 
  1612.     print ( 633 ) ; 
  1613.       } 
  1614.       printesc ( 730 ) ; 
  1615.       {
  1616.     helpptr = 1 ; 
  1617.     helpline [ 0 ] = 1005 ; 
  1618.       } 
  1619.       error () ; 
  1620.     } 
  1621.     else offsave () ; 
  1622.   } 
  1623.   else {
  1624.       
  1625.     p = newnoad () ; 
  1626.     mem [ p ] .hh.b0 = t ; 
  1627.     scandelimiter ( p + 1 , false ) ; 
  1628.     if ( t == 30 ) 
  1629.     {
  1630.       pushmath ( 16 ) ; 
  1631.       mem [ curlist .headfield ] .hh .v.RH = p ; 
  1632.       curlist .tailfield = p ; 
  1633.     } 
  1634.     else {
  1635.     
  1636.       p = finmlist ( p ) ; 
  1637.       unsave () ; 
  1638.       {
  1639.     mem [ curlist .tailfield ] .hh .v.RH = newnoad () ; 
  1640.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1641.       } 
  1642.       mem [ curlist .tailfield ] .hh.b0 = 23 ; 
  1643.       mem [ curlist .tailfield + 1 ] .hh .v.RH = 3 ; 
  1644.       mem [ curlist .tailfield + 1 ] .hh .v.LH = p ; 
  1645.     } 
  1646.   } 
  1647. aftermath () {
  1648.     aftermath_regmem 
  1649.   boolean l  ; 
  1650.   boolean danger  ; 
  1651.   integer m  ; 
  1652.   halfword p  ; 
  1653.   halfword a  ; 
  1654.   halfword b  ; 
  1655.   scaled w  ; 
  1656.   scaled z  ; 
  1657.   scaled e  ; 
  1658.   scaled q  ; 
  1659.   scaled d  ; 
  1660.   scaled s  ; 
  1661.   smallnumber g1, g2  ; 
  1662.   halfword r  ; 
  1663.   halfword t  ; 
  1664.   danger = false ; 
  1665.   if ( ( fontparams [ eqtb [ 4581 ] .hh .v.RH ] < 22 ) || ( fontparams [ eqtb 
  1666.   [ 4597 ] .hh .v.RH ] < 22 ) || ( fontparams [ eqtb [ 4613 ] .hh .v.RH ] < 22 
  1667.   ) ) 
  1668.   {
  1669.     {
  1670.       if ( interaction == 3 ) 
  1671.       wakeupterminal () ; 
  1672.       printnl ( 133 ) ; 
  1673.       print ( 1006 ) ; 
  1674.     } 
  1675.     {
  1676.       helpptr = 3 ; 
  1677.       helpline [ 2 ] = 1007 ; 
  1678.       helpline [ 1 ] = 1008 ; 
  1679.       helpline [ 0 ] = 1009 ; 
  1680.     } 
  1681.     error () ; 
  1682.     flushmath () ; 
  1683.     danger = true ; 
  1684.   } 
  1685.   else if ( ( fontparams [ eqtb [ 4582 ] .hh .v.RH ] < 13 ) || ( fontparams [ 
  1686.   eqtb [ 4598 ] .hh .v.RH ] < 13 ) || ( fontparams [ eqtb [ 4614 ] .hh .v.RH ] 
  1687.   < 13 ) ) 
  1688.   {
  1689.     {
  1690.       if ( interaction == 3 ) 
  1691.       wakeupterminal () ; 
  1692.       printnl ( 133 ) ; 
  1693.       print ( 1010 ) ; 
  1694.     } 
  1695.     {
  1696.       helpptr = 3 ; 
  1697.       helpline [ 2 ] = 1011 ; 
  1698.       helpline [ 1 ] = 1012 ; 
  1699.       helpline [ 0 ] = 1013 ; 
  1700.     } 
  1701.     error () ; 
  1702.     flushmath () ; 
  1703.     danger = true ; 
  1704.   } 
  1705.   m = curlist .modefield ; 
  1706.   l = false ; 
  1707.   p = finmlist ( 0 ) ; 
  1708.   if ( curlist .modefield == - (integer) m ) 
  1709.   {
  1710.     curmlist = p ; 
  1711.     curstyle = 2 ; 
  1712.     mlistpenalties = false ; 
  1713.     mlisttohlist () ; 
  1714.     a = hpack ( mem [ memtop - 3 ] .hh .v.RH , 0 , 1 ) ; 
  1715.     unsave () ; 
  1716.     decr ( saveptr ) ; 
  1717.     if ( savestack [ saveptr + 0 ] .cint == 1 ) 
  1718.     l = true ; 
  1719.     if ( danger ) 
  1720.     flushmath () ; 
  1721.     m = curlist .modefield ; 
  1722.     p = finmlist ( 0 ) ; 
  1723.   } 
  1724.   else a = 0 ; 
  1725.   if ( m < 0 ) 
  1726.   {
  1727.     {
  1728.       mem [ curlist .tailfield ] .hh .v.RH = newmath ( eqtb [ 5702 ] .cint , 0 
  1729.       ) ; 
  1730.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1731.     } 
  1732.     curmlist = p ; 
  1733.     curstyle = 2 ; 
  1734.     mlistpenalties = ( curlist .modefield > 0 ) ; 
  1735.     mlisttohlist () ; 
  1736.     mem [ curlist .tailfield ] .hh .v.RH = mem [ memtop - 3 ] .hh .v.RH ; 
  1737.     while ( mem [ curlist .tailfield ] .hh .v.RH != 0 ) curlist .tailfield = 
  1738.     mem [ curlist .tailfield ] .hh .v.RH ; 
  1739.     {
  1740.       mem [ curlist .tailfield ] .hh .v.RH = newmath ( eqtb [ 5702 ] .cint , 1 
  1741.       ) ; 
  1742.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1743.     } 
  1744.     curlist .auxfield = 1000 ; 
  1745.     unsave () ; 
  1746.   } 
  1747.   else {
  1748.       
  1749.     {
  1750.       getxtoken () ; 
  1751.       if ( curcmd != 3 ) 
  1752.       {
  1753.     {
  1754.       if ( interaction == 3 ) 
  1755.       wakeupterminal () ; 
  1756.       printnl ( 133 ) ; 
  1757.       print ( 1014 ) ; 
  1758.     } 
  1759.     {
  1760.       helpptr = 2 ; 
  1761.       helpline [ 1 ] = 1015 ; 
  1762.       helpline [ 0 ] = 1016 ; 
  1763.     } 
  1764.     backerror () ; 
  1765.       } 
  1766.     } 
  1767.     curmlist = p ; 
  1768.     curstyle = 0 ; 
  1769.     mlistpenalties = false ; 
  1770.     mlisttohlist () ; 
  1771.     p = mem [ memtop - 3 ] .hh .v.RH ; 
  1772.     adjusttail = memtop - 5 ; 
  1773.     b = hpack ( p , 0 , 1 ) ; 
  1774.     t = adjusttail ; 
  1775.     adjusttail = 0 ; 
  1776.     w = mem [ b + 1 ] .cint ; 
  1777.     z = eqtb [ 5715 ] .cint ; 
  1778.     s = eqtb [ 5716 ] .cint ; 
  1779.     if ( ( a == 0 ) || danger ) 
  1780.     {
  1781.       e = 0 ; 
  1782.       q = 0 ; 
  1783.     } 
  1784.     else {
  1785.     
  1786.       e = mem [ a + 1 ] .cint ; 
  1787.       q = e + fontinfo [ 6 + parambase [ eqtb [ 4581 ] .hh .v.RH ] ] .cint ; 
  1788.     } 
  1789.     if ( w + q > z ) 
  1790.     {
  1791.       if ( ( e != 0 ) && ( ( w - totalshrink [ 0 ] + q <= z ) || ( totalshrink 
  1792.       [ 1 ] != 0 ) || ( totalshrink [ 2 ] != 0 ) || ( totalshrink [ 3 ] != 0 ) 
  1793.       ) ) 
  1794.       {
  1795.     freenode ( b , 7 ) ; 
  1796.     b = hpack ( p , z - q , 0 ) ; 
  1797.       } 
  1798.       else {
  1799.       
  1800.     e = 0 ; 
  1801.     if ( w > z ) 
  1802.     {
  1803.       freenode ( b , 7 ) ; 
  1804.       b = hpack ( p , z , 0 ) ; 
  1805.     } 
  1806.       } 
  1807.       w = mem [ b + 1 ] .cint ; 
  1808.     } 
  1809.     d = half ( z - w ) ; 
  1810.     if ( ( e > 0 ) && ( d < 2 * e ) ) 
  1811.     {
  1812.       d = half ( z - w - e ) ; 
  1813.       if ( p != 0 ) 
  1814.       if ( mem [ p ] .hh.b0 == 10 ) 
  1815.       d = 0 ; 
  1816.     } 
  1817.     {
  1818.       mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5278 ] .cint 
  1819.       ) ; 
  1820.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1821.     } 
  1822.     if ( ( d + s <= eqtb [ 5714 ] .cint ) || l ) 
  1823.     {
  1824.       g1 = 3 ; 
  1825.       g2 = 4 ; 
  1826.     } 
  1827.     else {
  1828.     
  1829.       g1 = 5 ; 
  1830.       g2 = 6 ; 
  1831.     } 
  1832.     if ( l && ( e == 0 ) ) 
  1833.     {
  1834.       mem [ a + 4 ] .cint = s ; 
  1835.       appendtovlist ( a ) ; 
  1836.       {
  1837.     mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ; 
  1838.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1839.       } 
  1840.     } 
  1841.     else {
  1842.     
  1843.       mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( g1 ) ; 
  1844.       curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1845.     } 
  1846.     if ( e != 0 ) 
  1847.     {
  1848.       r = newkern ( z - w - e - d ) ; 
  1849.       if ( l ) 
  1850.       {
  1851.     mem [ a ] .hh .v.RH = r ; 
  1852.     mem [ r ] .hh .v.RH = b ; 
  1853.     b = a ; 
  1854.     d = 0 ; 
  1855.       } 
  1856.       else {
  1857.       
  1858.     mem [ b ] .hh .v.RH = r ; 
  1859.     mem [ r ] .hh .v.RH = a ; 
  1860.       } 
  1861.       b = hpack ( b , 0 , 1 ) ; 
  1862.     } 
  1863.     mem [ b + 4 ] .cint = s + d ; 
  1864.     appendtovlist ( b ) ; 
  1865.     if ( t != memtop - 5 ) 
  1866.     {
  1867.       mem [ curlist .tailfield ] .hh .v.RH = mem [ memtop - 5 ] .hh .v.RH ; 
  1868.       curlist .tailfield = t ; 
  1869.     } 
  1870.     if ( ( a != 0 ) && ( e == 0 ) && ! l ) 
  1871.     {
  1872.       {
  1873.     mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ; 
  1874.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1875.       } 
  1876.       mem [ a + 4 ] .cint = s + z - mem [ a + 1 ] .cint ; 
  1877.       appendtovlist ( a ) ; 
  1878.       {
  1879.     mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5279 ] 
  1880.     .cint ) ; 
  1881.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1882.       } 
  1883.     } 
  1884.     else {
  1885.     
  1886.       {
  1887.     mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5279 ] 
  1888.     .cint ) ; 
  1889.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1890.       } 
  1891.       {
  1892.     mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( g2 ) ; 
  1893.     curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ; 
  1894.       } 
  1895.     } 
  1896.     resumeafterdisplay () ; 
  1897.   } 
  1898. resumeafterdisplay () {
  1899.     resumeafterdisplay_regmem 
  1900.   if ( curgroup != 15 ) 
  1901.   confusion ( 1017 ) ; 
  1902.   unsave () ; 
  1903.   curlist .pgfield = curlist .pgfield + 3 ; 
  1904.   pushnest () ; 
  1905.   curlist .modefield = 101 ; 
  1906.   curlist .auxfield = 1000 ; 
  1907.   {
  1908.     getxtoken () ; 
  1909.     if ( curcmd != 10 ) 
  1910.     backinput () ; 
  1911.   } 
  1912.   if ( nestptr == 1 ) 
  1913.   buildpage () ; 
  1914. getrtoken () {
  1915.     /* 20 */ getrtoken_regmem 
  1916.   lab20: do {
  1917.       gettoken () ; 
  1918.   } while ( ! ( curtok != 2592 ) ) ; 
  1919.   if ( ( curcs == 0 ) || ( curcs > 3258 ) ) 
  1920.   {
  1921.     {
  1922.       if ( interaction == 3 ) 
  1923.       wakeupterminal () ; 
  1924.       printnl ( 133 ) ; 
  1925.       print ( 1032 ) ; 
  1926.     } 
  1927.     {
  1928.       helpptr = 5 ; 
  1929.       helpline [ 4 ] = 1033 ; 
  1930.       helpline [ 3 ] = 1034 ; 
  1931.       helpline [ 2 ] = 1035 ; 
  1932.       helpline [ 1 ] = 1036 ; 
  1933.       helpline [ 0 ] = 1037 ; 
  1934.     } 
  1935.     if ( curcs == 0 ) 
  1936.     backinput () ; 
  1937.     curtok = 7354 ; 
  1938.     inserror () ; 
  1939.     goto lab20 ; 
  1940.   } 
  1941. trapzeroglue () {
  1942.     trapzeroglue_regmem 
  1943.   if ( ( mem [ curval + 1 ] .cint == 0 ) && ( mem [ curval + 2 ] .cint == 0 ) 
  1944.   && ( mem [ curval + 3 ] .cint == 0 ) ) 
  1945.   {
  1946.     incr ( mem [ 0 ] .hh .v.RH ) ; 
  1947.     deleteglueref ( curval ) ; 
  1948.     curval = 0 ; 
  1949.   } 
  1950. zdoregistercommand ( a ) 
  1951. smallnumber a ; 
  1952. {/* 40 10 */ doregistercommand_regmem 
  1953.   halfword l, q, r, s  ; 
  1954.   schar p  ; 
  1955.   q = curcmd ; 
  1956.   {
  1957.     if ( q != 88 ) 
  1958.     {
  1959.       getxtoken () ; 
  1960.       if ( ( curcmd >= 72 ) && ( curcmd <= 75 ) ) 
  1961.       {
  1962.     l = curchr ; 
  1963.     p = curcmd - 72 ; 
  1964.     goto lab40 ; 
  1965.       } 
  1966.       if ( curcmd != 88 ) 
  1967.       {
  1968.     {
  1969.       if ( interaction == 3 ) 
  1970.       wakeupterminal () ; 
  1971.       printnl ( 133 ) ; 
  1972.       print ( 541 ) ; 
  1973.     } 
  1974.     printcmdchr ( curcmd , curchr ) ; 
  1975.     print ( 542 ) ; 
  1976.     printcmdchr ( q , 0 ) ; 
  1977.     {
  1978.       helpptr = 1 ; 
  1979.       helpline [ 0 ] = 1058 ; 
  1980.     } 
  1981.     error () ; 
  1982.     return ; 
  1983.       } 
  1984.     } 
  1985.     p = curchr ; 
  1986.     scaneightbitint () ; 
  1987.     switch ( p ) 
  1988.     {case 0 : 
  1989.       l = curval + 5317 ; 
  1990.       break ; 
  1991.     case 1 : 
  1992.       l = curval + 5721 ; 
  1993.       break ; 
  1994.     case 2 : 
  1995.       l = curval + 3544 ; 
  1996.       break ; 
  1997.     case 3 : 
  1998.       l = curval + 3800 ; 
  1999.       break ; 
  2000.     } 
  2001.   } 
  2002.   lab40: ; 
  2003.   if ( q == 88 ) 
  2004.   scanoptionalequals () ; 
  2005.   else if ( scankeyword ( 1054 ) ) 
  2006.   ; 
  2007.   aritherror = false ; 
  2008.   if ( q < 90 ) 
  2009.   if ( p < 2 ) 
  2010.   {
  2011.     if ( p == 0 ) 
  2012.     scanint () ; 
  2013.     else scandimen ( false , false , false ) ; 
  2014.     if ( q == 89 ) 
  2015.     curval = curval + eqtb [ l ] .cint ; 
  2016.   } 
  2017.   else {
  2018.       
  2019.     scanglue ( p ) ; 
  2020.     if ( q == 89 ) 
  2021.     {
  2022.       q = newspec ( curval ) ; 
  2023.       r = eqtb [ l ] .hh .v.RH ; 
  2024.       deleteglueref ( curval ) ; 
  2025.       mem [ q + 1 ] .cint = mem [ q + 1 ] .cint + mem [ r + 1 ] .cint ; 
  2026.       if ( mem [ q + 2 ] .cint == 0 ) 
  2027.       mem [ q ] .hh.b0 = 0 ; 
  2028.       if ( mem [ q ] .hh.b0 == mem [ r ] .hh.b0 ) 
  2029.       mem [ q + 2 ] .cint = mem [ q + 2 ] .cint + mem [ r + 2 ] .cint ; 
  2030.       else if ( ( mem [ q ] .hh.b0 < mem [ r ] .hh.b0 ) && ( mem [ r + 2 ] 
  2031.       .cint != 0 ) ) 
  2032.       {
  2033.     mem [ q + 2 ] .cint = mem [ r + 2 ] .cint ; 
  2034.     mem [ q ] .hh.b0 = mem [ r ] .hh.b0 ; 
  2035.       } 
  2036.       if ( mem [ q + 3 ] .cint == 0 ) 
  2037.       mem [ q ] .hh.b1 = 0 ; 
  2038.       if ( mem [ q ] .hh.b1 == mem [ r ] .hh.b1 ) 
  2039.       mem [ q + 3 ] .cint = mem [ q + 3 ] .cint + mem [ r + 3 ] .cint ; 
  2040.       else if ( ( mem [ q ] .hh.b1 < mem [ r ] .hh.b1 ) && ( mem [ r + 3 ] 
  2041.       .cint != 0 ) ) 
  2042.       {
  2043.     mem [ q + 3 ] .cint = mem [ r + 3 ] .cint ; 
  2044.     mem [ q ] .hh.b1 = mem [ r ] .hh.b1 ; 
  2045.       } 
  2046.       curval = q ; 
  2047.     } 
  2048.   } 
  2049.   else {
  2050.       
  2051.     scanint () ; 
  2052.     if ( p < 2 ) 
  2053.     if ( q == 90 ) 
  2054.     curval = nxplusy ( eqtb [ l ] .cint , curval , 0 ) ; 
  2055.     else curval = xovern ( eqtb [ l ] .cint , curval ) ; 
  2056.     else {
  2057.     
  2058.       s = eqtb [ l ] .hh .v.RH ; 
  2059.       r = newspec ( s ) ; 
  2060.       if ( q == 90 ) 
  2061.       {
  2062.     mem [ r + 1 ] .cint = nxplusy ( mem [ s + 1 ] .cint , curval , 0 ) ; 
  2063.     mem [ r + 2 ] .cint = nxplusy ( mem [ s + 2 ] .cint , curval , 0 ) ; 
  2064.     mem [ r + 3 ] .cint = nxplusy ( mem [ s + 3 ] .cint , curval , 0 ) ; 
  2065.       } 
  2066.       else {
  2067.       
  2068.     mem [ r + 1 ] .cint = xovern ( mem [ s + 1 ] .cint , curval ) ; 
  2069.     mem [ r + 2 ] .cint = xovern ( mem [ s + 2 ] .cint , curval ) ; 
  2070.     mem [ r + 3 ] .cint = xovern ( mem [ s + 3 ] .cint , curval ) ; 
  2071.       } 
  2072.       curval = r ; 
  2073.     } 
  2074.   } 
  2075.   if ( aritherror ) 
  2076.   {
  2077.     {
  2078.       if ( interaction == 3 ) 
  2079.       wakeupterminal () ; 
  2080.       printnl ( 133 ) ; 
  2081.       print ( 1055 ) ; 
  2082.     } 
  2083.     {
  2084.       helpptr = 2 ; 
  2085.       helpline [ 1 ] = 1056 ; 
  2086.       helpline [ 0 ] = 1057 ; 
  2087.     } 
  2088.     error () ; 
  2089.     return ; 
  2090.   } 
  2091.   if ( p < 2 ) 
  2092.   if ( ( a >= 4 ) ) 
  2093.   geqworddefine ( l , curval ) ; 
  2094.   else eqworddefine ( l , curval ) ; 
  2095.   else {
  2096.       
  2097.     trapzeroglue () ; 
  2098.     if ( ( a >= 4 ) ) 
  2099.     geqdefine ( l , 116 , curval ) ; 
  2100.     else eqdefine ( l , 116 , curval ) ; 
  2101.   } 
  2102.